home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / IEditor / ARexx / GoldED / MakeCatalog.ged
Encoding:
Text File  |  1997-06-17  |  3.3 KB  |  145 lines

  1. /*
  2. **  $VER: MakeCatalog.ged 0.002 (6.10.96)
  3. **
  4. **  © 1996 Simone Tellini
  5. **
  6. **  PROGRAMNAME:  MakeCatalog.ged
  7. **
  8. **  FUNCTION:     Fills a blank ct file using a model one.
  9. **
  10. **  $HISTORY:
  11. **
  12. **   11 Feb 1996 : 000.001 : initial release
  13. **    6 Oct 1996 : 000.002 : 'QUIET' switch in 'WINDOW USE'
  14. */
  15.  
  16. OPTIONS RESULTS                             /* enable return codes     */
  17.  
  18. ARG From To                                 /* accept two arguments    */
  19.  
  20. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  21.     address 'GOLDED.1'
  22.  
  23. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  24. if (RC ~= 0) then
  25.     exit
  26.  
  27. OPTIONS FAILAT 6                            /* ignore warnings         */
  28. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  29.  
  30.  
  31. /* ------------------------ INSERT YOUR CODE HERE: ------------------- */
  32.  
  33. 'OPEN NAME' from to 'FAST NEW'
  34. 'WINDOW ARRANGE 0'
  35.  
  36. 'WINDOW USE' from 'QUIET'
  37.  
  38. 'GOTO LINE 1 COLUMN 1'  /* Copy the first 3 lines to the destination */
  39. 'MARK SET'              /* file                                      */
  40. 'GOTO LINE 3 EOL'
  41. 'MARK END SET'
  42. 'CLIP COPY'
  43. 'MARK HIDE'
  44.  
  45. 'WINDOW USE' to 'QUIET'
  46.  
  47. 'GOTO LINE 1 COLUMN 1'
  48. 'DELETE LINE'
  49. 'DELETE LINE'
  50. 'DELETE LINE'
  51. 'CLIP PASTE'
  52.  
  53. 'GOTO LINE 5'
  54.  
  55. 'WINDOW USE' from 'QUIET'
  56. 'QUERY LINES VAR LINES'      /*  get number of lines  */
  57.  
  58. line = 4
  59.  
  60. 'GOTO LINE 4 COLUMN 1'
  61.  
  62. DO WHILE line < lines       /*  ok, let's examine all the lines  */
  63.  
  64.     'WINDOW USE' from 'QUIET'
  65.  
  66.     'DOWN'
  67.     line = line + 1
  68.  
  69.     'FIRST'
  70.  
  71.     'QUERY BUFFER VAR LINEFROM'
  72.  
  73.     IF LEFT( linefrom, 1 ) ~== ';' THEN DO  /* skip comments */
  74.  
  75.         'DOWN'
  76.         'MARK SET'
  77.         'DOWN'
  78.         'QUERY BUFFER VAR WORD'
  79.  
  80.         line = line + 2;
  81.  
  82.         DO WHILE LEFT( word, 1 ) ~== ';'    /* search for the end of */
  83.             'DOWN'                          /* the string            */
  84.             'QUERY BUFFER VAR WORD'
  85.             line = line + 1
  86.         END
  87.  
  88.         'QUERY BUFFER VAR LINEFROM'
  89.  
  90.         'UP'            /* back to last line */
  91.         'GOTO EOL'
  92.         'MARK END SET'
  93.         'CLIP COPY'
  94.         'MARK HIDE'
  95.         'DOWN'
  96.  
  97.         'WINDOW USE' to 'QUIET'
  98.  
  99.         IF LENGTH( linefrom ) > 30 THEN
  100.             search = LEFT( linefrom, 30 )
  101.         ELSE
  102.             search = linefrom
  103.         /* GoldEd caused a Guru with a string of 192 chars... :(  */
  104.         /* Anyway, if the first 30 chars are equal, well, we've   */
  105.         /* got 99.9% of chances to have found the right string ;) */
  106.  
  107.         'FIND STRING "'search'" FIRST WILD=FALSE CASE=TRUE QUIET'
  108.         'QUERY BUFFER VAR LINETO'
  109.  
  110.         DO WHILE lineto ~== linefrom
  111.             'FIND STRING "'search'" NEXT WILD=FALSE CASE=TRUE QUIET'
  112.             ret = RC
  113.             IF ret = 5 THEN LEAVE
  114.             'QUERY BUFFER VAR LINETO'
  115.         END
  116.  
  117.         IF linefrom == LEFT( lineto, LENGTH( linefrom )) THEN DO
  118. /*        IF ret = 0 THEN DO */
  119.             /* the search was successful */
  120.             'UP'
  121.             'FIRST'
  122.             'DELETE LINE'   /* remove the blank line */
  123.             'CLIP PASTE'
  124.         END
  125.  
  126.     END
  127. END
  128.  
  129. 'WINDOW USE' from 'QUIET'
  130. 'QUIT'
  131.  
  132. 'WINDOW USE' to
  133.  
  134. /* ---------------------------- END OF YOUR CODE --------------------- */
  135.  
  136. 'UNLOCK' /* VERY important: unlock GUI */
  137. EXIT
  138.  
  139. SYNTAX:
  140.  
  141. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  142. 'UNLOCK'
  143. EXIT
  144.  
  145.